/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Cartera_y_caja;

import Models.acceso;
import inmobiliaria_fase01.Conexion;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Vector;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JDialog;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableModel;

/**
 *
 * @author Usuario
 */
public class Notas extends javax.swing.JDialog {

   private DefaultTableModel modeloDeMiJTable; 
    
    public Notas(java.awt.Frame parent, boolean modal) {
        super(parent, modal);
        initComponents();
        setSize(750,500);
        setLocationRelativeTo(rootPane);
        setTitle("Notas");
        conn.establecer_conexion();
        buscar_operador();
        
        jButton_eliminar.setVisible(false);
        jButton_actualizar.setVisible(false);
        modeloDeMiJTable = new DefaultTableModel() { 
        @Override 
        public Class getColumnClass(int c) { 
        return getValueAt(0, c).getClass(); 
        
        } 

        @Override 
        public boolean isCellEditable(int rowIndex, int columnIndex) { 
        return false; 
        }

        };
        
        modeloDeMiJTable.addColumn("NOTA");
        modeloDeMiJTable.addColumn("USUARIO");
        modeloDeMiJTable.addColumn("FECHA");
        modeloDeMiJTable.addColumn("SELECCIONAR");
        jTable1.setModel(modeloDeMiJTable);
        int[] anchos = {400, 10, 10, 10};
        for(int i = 0; i < jTable1.getColumnCount(); i++) {

            //Sacamos el modelo de columnas de nuestra tabla

            //luego obtenemos la columna en la posicion "i"

            //invocamos el metodo setPreferrefWidth para ajustar el ancho

            //y le damos el valor del entero que esta en el arreglo en la posicion "i"

            jTable1.getColumnModel().getColumn(i).setPreferredWidth(anchos[i]);
            
        }
            jButton_confirmar.setVisible(false);
            inicializar(false);
            llenartabla();
            
    }
   private void inicializar(Boolean a){
       jTextField_nota.setEnabled(a);
   }
   
   private void botones_iniciales(Boolean a, Boolean b, Boolean c){
       jButton_agregar.setSelected(a);
       jButton_actualizar.setSelected(b);
       jButton_eliminar.setSelected(c);
   
   }
       public void llenartabla(){
        conn.establecer_conexion();
        String consulta="select nota, usuario, fecha::date from notas where estado = 1 order by fecha desc";
        ResultSet n=conn.consulta(consulta);
        try{
        while(n.next()){
        modeloDeMiJTable.addRow(new Object[]{n.getString(1),n.getString(2),n.getString(3), ""});
        }
        }
        catch(Exception e){}
    }
       
    public void limpiarTabla(JTable tabla){
            try {
                DefaultTableModel modelo=(DefaultTableModel) tabla.getModel();
                int filas=tabla.getRowCount();
                for (int i = 0;filas>i; i++) {
                    modelo.removeRow(0);
                }
            } catch (Exception e) {
                JOptionPane.showMessageDialog(null, "Error al limpiar la tabla.");
            }
        }       
       
       public void combo(){
       //limpio el combobox
        jCombo_usuarios.removeAllItems();
           try {
               conn.establecer_conexion();
                String consulta = "select usuario from usuarios where estado = 1";
                ResultSet query = conn.consulta(consulta);
                while(query.next()){
                jCombo_usuarios.addItem(query.getObject("Notas de Usuarios"));
                }
                
               
           } catch (Exception e) {
               JOptionPane.showMessageDialog(null,"Error sql no se pueden leer datos");
           }
       }

       
    public void buscar_operador(){
        Vector cliente = new Vector();
        try{
         conn.establecer_conexion();
         String sql="select usuario from usuarios";
         ResultSet resultado = conn.consulta(sql);
         cliente.addElement("Seleccione un Usuario");
         while(resultado.next()){
             cliente.addElement(resultado.getString(1));
         }
        jCombo_usuarios.setModel(new javax.swing.DefaultComboBoxModel(cliente));
        jCombo_usuarios.setModel(new javax.swing.DefaultComboBoxModel(cliente));
        //jPanel1.add(jComboBox_operador);
        }catch(Exception e){
            
        }
        //jTable1.setDefaultRenderer (Object.class, new Renderito());
    }       
    /**
     * This method is called from within the constructor to initialize the form.
     * WARNING: Do NOT modify this code. The content of this method is always
     * regenerated by the Form Editor.
     */
    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        jTable1 = new javax.swing.JTable();
        jLabel4 = new javax.swing.JLabel();
        jLabel6 = new javax.swing.JLabel();
        jTextField_nota = new javax.swing.JTextField();
        jCombo_usuarios = new javax.swing.JComboBox();
        jButton_confirmar = new javax.swing.JButton();
        jButton_agregar = new javax.swing.JButton();
        jButton_eliminar = new javax.swing.JButton();
        jButton_actualizar = new javax.swing.JButton();

        setDefaultCloseOperation(javax.swing.WindowConstants.DISPOSE_ON_CLOSE);
        getContentPane().setLayout(null);

        jLabel1.setFont(new java.awt.Font("Segoe UI", 1, 36)); // NOI18N
        jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
        jLabel1.setText("Notas");
        getContentPane().add(jLabel1);
        jLabel1.setBounds(0, 0, 200, 50);

        jTable1.setModel(new javax.swing.table.DefaultTableModel(
            new Object [][] {
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null},
                {null, null, null, null}
            },
            new String [] {
                "Title 1", "Title 2", "Title 3", "Title 4"
            }
        ));
        jTable1.addMouseListener(new java.awt.event.MouseAdapter() {
            public void mouseClicked(java.awt.event.MouseEvent evt) {
                jTable1MouseClicked(evt);
            }
        });
        jScrollPane1.setViewportView(jTable1);

        getContentPane().add(jScrollPane1);
        jScrollPane1.setBounds(20, 100, 700, 210);

        jLabel4.setFont(new java.awt.Font("Segoe UI", 1, 14)); // NOI18N
        jLabel4.setText("Buscar");
        getContentPane().add(jLabel4);
        jLabel4.setBounds(20, 60, 50, 30);

        jLabel6.setFont(new java.awt.Font("Segoe UI", 1, 18)); // NOI18N
        jLabel6.setText("Nota");
        getContentPane().add(jLabel6);
        jLabel6.setBounds(40, 320, 60, 30);
        getContentPane().add(jTextField_nota);
        jTextField_nota.setBounds(110, 320, 550, 30);

        jCombo_usuarios.setModel(new javax.swing.DefaultComboBoxModel(new String[] { "Seleccione Codigo" }));
        jCombo_usuarios.addItemListener(new java.awt.event.ItemListener() {
            public void itemStateChanged(java.awt.event.ItemEvent evt) {
                jCombo_usuariosItemStateChanged(evt);
            }
        });
        jCombo_usuarios.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jCombo_usuariosActionPerformed(evt);
            }
        });
        getContentPane().add(jCombo_usuarios);
        jCombo_usuarios.setBounds(90, 60, 260, 30);

        jButton_confirmar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/1402870079_floppy.png"))); // NOI18N
        jButton_confirmar.setText("sin texto");
        jButton_confirmar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_confirmarActionPerformed(evt);
            }
        });
        getContentPane().add(jButton_confirmar);
        jButton_confirmar.setBounds(300, 360, 170, 50);

        jButton_agregar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/1407010829_stock_task-assigned.png"))); // NOI18N
        jButton_agregar.setText("Iniciar");
        jButton_agregar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_agregarActionPerformed(evt);
            }
        });
        getContentPane().add(jButton_agregar);
        jButton_agregar.setBounds(350, 10, 120, 40);

        jButton_eliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/Sin título-2.png"))); // NOI18N
        jButton_eliminar.setText("Finalizar");
        jButton_eliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_eliminarActionPerformed(evt);
            }
        });
        getContentPane().add(jButton_eliminar);
        jButton_eliminar.setBounds(590, 10, 120, 40);

        jButton_actualizar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/img/1407010824_stock_task-recurring.png"))); // NOI18N
        jButton_actualizar.setText("Editar");
        jButton_actualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                jButton_actualizarActionPerformed(evt);
            }
        });
        getContentPane().add(jButton_actualizar);
        jButton_actualizar.setBounds(470, 10, 120, 40);

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void jButton_agregarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_agregarActionPerformed
       inicializar(true);
        botones_iniciales(true, false, false);
       jButton_confirmar.setVisible(true);
       jButton_confirmar.setText("GUARDAR");
       jTextField_nota.setText("");
       
       
    }//GEN-LAST:event_jButton_agregarActionPerformed

    private void jButton_eliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_eliminarActionPerformed
        int row=jTable1.getSelectedRow();
        if(jTable1.getValueAt(row, 1).toString().equals(acc.usuario)){
            conn.establecer_conexion();
            String consulta ="select cod_nota from notas where nota = '"+jTable1.getValueAt(row, 0).toString()+"'";
            ResultSet n = conn.consulta(consulta);
            try {
             while (n.next()) {
                 codigo=n.getInt(1);
             }
            } catch (Exception e) {}
            String update = "update notas set estado = 2 where cod_nota = "+codigo+" ";
            System.out.println(update);
            conn.Dactualizar(update, "LA NOTA SE ELIMINO CON CORRECTAMENTE");
            validar=1;
            inicializar(false);
        if (validar==1){
            limpiarTabla(jTable1);
            llenartabla();
            jButton_confirmar.setVisible(false);
            jTextField_nota.setVisible(false);
            jTextField_nota.setText("");
            jTextField_nota.setVisible(false);
            jButton_actualizar.setVisible(false);
            jButton_eliminar.setVisible(false);
            codigo = 0;
            accion=0;
            botones_iniciales(false, false, false);
        }
            
    }else{
            conn.JOptionShowMessage("+1", "", "NOTAS DE OTROS USUARIOS, NO SE PUEDEN ELIMINAR");
    }
    }//GEN-LAST:event_jButton_eliminarActionPerformed

    private void jButton_confirmarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_confirmarActionPerformed
        int validar =1;
        
        String nota  ="";
        int crow=modeloDeMiJTable.getRowCount();
        for(int i=0;i<crow;i++){
            if(jTable1.getValueAt(i,3).equals("X")){
                nota = jTable1.getValueAt(i, 0).toString();
            }
        }
        if(jButton_confirmar.getText().equals("GUARDAR")){
            String insrt="insert into notas (nota, usuario, fecha, estado) values ('"+jTextField_nota.getText().toUpperCase()+"', '"+acc.getUsuario()+"', now(), 1)";
            conn.insertar(insrt);
            System.out.println(acc.getUsuario());
            validar=1;
        }else if(jButton_confirmar.getText().equals("ACTUALIZAR")){
            String update = "update notas set nota ='"+jTextField_nota.getText().toUpperCase()+"' where cod_nota = "+codigo+" ";
            System.out.println(update);
            conn.Dactualizar(update, "LA NOTA SE ACTUALIZO CON CORRECTAMENTE");
            validar=1;
            inicializar(false);
        }else if(jButton_confirmar.getText().equals("ELIMINAR")){
            String update = "update notas set estado = 2 where cod_nota = "+codigo+" ";
            System.out.println(update);
            conn.Dactualizar(update, "LA NOTA SE ELIMINO CON CORRECTAMENTE");
            validar=1;
            inicializar(false);
        }
        if (validar==1){
            limpiarTabla(jTable1);
            llenartabla();
            jButton_confirmar.setVisible(false);
            jTextField_nota.setVisible(false);
            jTextField_nota.setText("");
            codigo = 0;
            accion=0;
        }
        
    }//GEN-LAST:event_jButton_confirmarActionPerformed

    private void jCombo_usuariosActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jCombo_usuariosActionPerformed
        // TODO add your handling code here:
    }//GEN-LAST:event_jCombo_usuariosActionPerformed

    private void jCombo_usuariosItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_jCombo_usuariosItemStateChanged
        conn.establecer_conexion();
        limpiarTabla(jTable1);
        if(jCombo_usuarios.getSelectedIndex()!=0){
            String consulta="select nota, usuario, fecha::date from notas where estado = 1 and usuario = '"+jCombo_usuarios.getSelectedItem()+"'order by fecha desc";
            ResultSet n=conn.consulta(consulta);
            try{
            while(n.next()){
            modeloDeMiJTable.addRow(new Object[]{n.getString(1),n.getString(2),n.getString(3), ""});
            }
            }
            catch(Exception e){}                
        }else{
            String consulta="select nota, usuario, fecha::date from notas where estado = 1 order by fecha desc";
            ResultSet n=conn.consulta(consulta);
            try{
            while(n.next()){
            modeloDeMiJTable.addRow(new Object[]{n.getString(1),n.getString(2),n.getString(3), ""});
            }
            }
            catch(Exception e){}                
        }
    }//GEN-LAST:event_jCombo_usuariosItemStateChanged

    private void jTable1MouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_jTable1MouseClicked
        int row=jTable1.getSelectedRow();
        if(validar==1){
            if(jTable1.getValueAt(row2, 3).equals("X")){
                jTable1.setValueAt("", row2, 3);
            }
        }
        if(jTable1.getValueAt(row, 3).equals("")){
            jTable1.setValueAt("X", row, 3);
            jButton_eliminar.setVisible(true);
            jButton_actualizar.setVisible(true);            
            if(accion==2){
                jTextField_nota.setText(jTable1.getValueAt(row, 0).toString());
            }
            
            validar=1;
            row2=row;
        }
        
    }//GEN-LAST:event_jTable1MouseClicked

    private void jButton_actualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_jButton_actualizarActionPerformed
        botones_iniciales(false, true, false);
        int row=jTable1.getSelectedRow();
            if(jTable1.getValueAt(row, 1).toString().equals(acc.getUsuario())){
            jTextField_nota.setText(jTable1.getValueAt(row, 0).toString());
             inicializar(true);
            conn.establecer_conexion();
            jTextField_nota.setVisible(true);       
            jButton_confirmar.setVisible(true);
            jButton_confirmar.setText("ACTUALIZAR");
            String consulta ="select cod_nota from notas where nota = '"+jTable1.getValueAt(row, 0).toString()+"'";
            ResultSet n = conn.consulta(consulta);
             try {
                 while (n.next()) {
                     codigo=n.getInt(1);
                 }
             } catch (Exception e) {}
            accion =2;
       }else{
                conn.JOptionShowMessage("+1", "", "NOTAS DE OTROS USUARIOS, NO SE PUEDEN EDITAR");
        }
    }//GEN-LAST:event_jButton_actualizarActionPerformed

    /**
     * @param args the command line arguments
     */
    
    
    int row2=-1, validar = 0;
    Conexion conn = new Conexion();
    acceso acc = new acceso();
    int accion = 0, codigo =0;
    Boolean falso = false, verdadero = true;    
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton jButton_actualizar;
    private javax.swing.JButton jButton_agregar;
    private javax.swing.JButton jButton_confirmar;
    private javax.swing.JButton jButton_eliminar;
    private javax.swing.JComboBox jCombo_usuarios;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JLabel jLabel4;
    private javax.swing.JLabel jLabel6;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTable jTable1;
    private javax.swing.JTextField jTextField_nota;
    // End of variables declaration//GEN-END:variables
}
